package com.taotao.complier.calcu.visit;

import com.taotao.complier.calcu.ast.AddSubNode;
import com.taotao.complier.calcu.ast.Expr2Node;
import com.taotao.complier.calcu.ast.ExprNode;
import com.taotao.complier.calcu.ast.FactorNode;
import com.taotao.complier.calcu.ast.MulDivNode;
import com.taotao.complier.calcu.ast.NumNode;
import com.taotao.complier.calcu.ast.Term2Node;
import com.taotao.complier.calcu.ast.TermNode;

public interface Visitor {


    /**
     * 访问到数字节点
     *
     * @param node
     * @return
     */
    void visitNum(NumNode node);

    /**
     * 访问到乘除节点
     *
     * @param node
     * @return
     */
    void visitMulDiv(MulDivNode node);

    /**
     * 访问到加减节点
     *
     * @param node
     * @return
     */
    void visitAddSub(AddSubNode node);

    void visitExpr(ExprNode node);

    void visitTerm(TermNode node);

    void visitTerm2(Term2Node node);

    void visitExpr2(Expr2Node node);

    void visitFactor(FactorNode node);
}
